/**
 * @author Vitor Franco do Carmo (vfcarmo@gmail.com)
 * @since 31/10/2013
 *
 */
package br.com.vfcfw.persistence.util;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

/**
 * Classe utilitária responsável por criar e disponibilizar a fábrica de {@link EntityManager}.
 * 
 * @author Vitor Franco do Carmo (vfcarmo@gmail.com)
 * @since 31/10/2013
 * 
 */
public class JPAHibernateUtil {

    private static EntityManagerFactory entityManagerFactory;

    /**
     * Retorna a fábrica de {@link EntityManager}.
     * 
     * @param unidadePersistencia Nome da unidade de persistência.
     * @return {@link EntityManagerFactory}.
     */
    public static EntityManagerFactory getEntityManagerFactory(String unidadePersistencia) {

        if (entityManagerFactory == null) {

            configureEntityManagerFactory(unidadePersistencia);
        }
        return entityManagerFactory;
    }

    /**
     * Configura e retorna a fábrica do {@link EntityManager}.
     * 
     * @param unidadePersistencia Nome da unidade de persistência.
     */
    private static void configureEntityManagerFactory(String unidadePersistencia) {

        entityManagerFactory = Persistence.createEntityManagerFactory(unidadePersistencia);
    }
}
